package sge.DAO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
import sge.Datos.ModeloTabla;
import sge.Entidades.*;

public class LugarDAO implements ObjetoDAO {

    private final static Logger LOG = Logger.getLogger(UsuarioDAO.class.getName());

    public LugarDAO() {
    }

    public boolean crear(Lugar lugar) {
        String consulta = "INSERT INTO lugar(id_lugar, nombre, capacidad, "
                + "descripcion) VALUES(NULL, '"
                + lugar.getNombre() + "', '"
                + lugar.getCapacidad() + "', '"
                + lugar.getDescripcion() + "');";


        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        if (exito) {
            lugar.setIdLugar(CONEXION.obtenerUltimoIDGenerado());
        }
        return exito;
    }

    public boolean modificar(Lugar lugar) {
        String consulta = "UPDATE lugar SET "
                + "id_lugar='" + lugar.getIdLugar()
                + "', nombre='" + lugar.getNombre()
                + "', capacidad='" + lugar.getCapacidad()
                + "', descripcion='" + lugar.getDescripcion() + "' WHERE "
                + "id_lugar='" + lugar.getIdLugar() + "';";


        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;
        return exito;
    }

    public boolean eliminar(Integer idLugar) {
        String consulta = "DELETE FROM lugar WHERE id_lugar='" + idLugar + "';";

        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        return exito;
    }

    public boolean consultar(Lugar lugar) {

        String consulta = "SELECT * FROM lugar"
                + " WHERE id_lugar = '" + lugar.getIdLugar() + "';";

        PreparedStatement ps =
                CONEXION.crearSentenciaPreparada(consulta);

        try {
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                lugar.setIdLugar(rs.getInt(1));
                lugar.setNombre(rs.getString(2));
                lugar.setCapacidad(rs.getInt(3));
                lugar.setDescripcion(rs.getString(4));
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public ModeloTabla seleccionar() {
        String consulta = "SELECT * FROM lugar";
        ArrayList<String> cols = new ArrayList<>();

        cols.add("Id lugar");
        cols.add("Nombre");
        cols.add("Capacidad");
        cols.add("Descripcion");

        ModeloTabla modelo = new ModeloTabla(consulta, cols, false);

        return modelo;

    }
}